﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using docTissV2.Enumeradores;

namespace docTissV2.Classes
{
    public class XPathCustomControlXmlMapping
    {
        #region Properties

        private string codigoPrestadorNaOperadora = "";
        public string CodigoPrestadorNaOperadora
        {
            get { return codigoPrestadorNaOperadora; }
            set { codigoPrestadorNaOperadora = value; }
        }
        private string cpf = "";
        public string CPF
        {
            get { return cpf; }
            set { cpf = value; }
        }
        private string cnpj = "";
        public string CNPJ
        {
            get { return cnpj; }
            set { cnpj = value; }
        }

        #endregion
        /// <summary>
        /// Mapeia os endereços (xPath) do mainDocumentXml de acordo com o tipo da guia e o tipo do profissional
        /// </summary>
        /// <param name="tipoGuia"></param>
        /// <param name="tipoProfissional">Profissional Solicitante OU Executante</param>
        public XPathCustomControlXmlMapping(TipoGuia tipoGuia, TipoProfissional tipoProfissional)
        {
            if (tipoProfissional != TipoProfissional.ProfissionalSolicitanteExecutante)
            {
                switch (tipoGuia)
                {
                    case TipoGuia.Consulta:
                        CPF = "/ns0:guiaConsulta[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:CPF[1]";
                        CNPJ = "/ns0:guiaConsulta[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                        CodigoPrestadorNaOperadora = "/ns0:guiaConsulta[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                        break;
                    case TipoGuia.SP_SADT:
                        switch (tipoProfissional)
                        {
                            case TipoProfissional.ProfissionalSolicitante:
                                CPF = "/ns0:guiaSP_SADT[1]/ns0:dadosSolicitante[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:cpf[1]";
                                CNPJ = "/ns0:guiaSP_SADT[1]/ns0:dadosSolicitante[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                                CodigoPrestadorNaOperadora = "/ns0:guiaSP_SADT[1]/ns0:dadosSolicitante[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                                break;
                            case TipoProfissional.ProfissionalExecutante:
                                CPF = "/ns0:guiaSP_SADT[1]/ns0:prestadorExecutante[1]/ns0:identificacao[1]/ns0:CPF[1]";
                                CNPJ = "/ns0:guiaSP_SADT[1]/ns0:prestadorExecutante[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                                CodigoPrestadorNaOperadora = "/ns0:guiaSP_SADT[1]/ns0:prestadorExecutante[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                                break;
                            default:
                                break;
                        }
                        break;
                    case TipoGuia.Resumo_Internação:
                        CPF = "/ns0:guiaResumoInternacao[1]/ns0:identificacaoExecutante[1]/ns0:identificacao[1]/ns0:CPF[1]";
                        CNPJ = "/ns0:guiaResumoInternacao[1]/ns0:identificacaoExecutante[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                        CodigoPrestadorNaOperadora = "/ns0:guiaResumoInternacao[1]/ns0:identificacaoExecutante[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                        break;
                    case TipoGuia.Honorário_Individual:
                        switch (tipoProfissional)
                        {
                            case TipoProfissional.ProfissionalSolicitante:
                                CPF = "/ns0:guiaHonorarioIndividual[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:CPF[1]";
                                CNPJ = "/ns0:guiaHonorarioIndividual[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                                CodigoPrestadorNaOperadora = "/ns0:guiaHonorarioIndividual[1]/ns0:contratado[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                                break;
                            case TipoProfissional.ProfissionalExecutante:
                                CPF = "/ns0:guiaHonorarioIndividual[1]/ns0:contratadoExecutante[1]/ns0:identificacao[1]/ns0:CPF[1]";
                                CNPJ = "/ns0:guiaHonorarioIndividual[1]/ns0:contratadoExecutante[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                                CodigoPrestadorNaOperadora = "/ns0:guiaHonorarioIndividual[1]/ns0:contratadoExecutante[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                                break;
                            default:
                                break;
                        }
                        break;
                    case TipoGuia.Odontologia:
                        CPF = "/ns0:guiaOdontologia[1]/ns0:dadosContratadoExecutante[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:CPF[1]";
                        CNPJ = "/ns0:guiaOdontologia[1]/ns0:dadosContratadoExecutante[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:CNPJ[1]";
                        CodigoPrestadorNaOperadora = "/ns0:guiaOdontologia[1]/ns0:dadosContratadoExecutante[1]/ns0:dadosContratado[1]/ns0:identificacao[1]/ns0:codigoPrestadorNaOperadora[1]";
                        break;
                    case TipoGuia.Solicitação_Internação:
                        break;
                    case TipoGuia.Solicitação_Prorrogação:
                        break;
                    case TipoGuia.Solicitação_SADT:
                        break;
                    case TipoGuia.Solicitação_Odontologia:
                    default:
                        break;
                }
            }
        }
    }
}
